/* 
 * File:   light.cpp
 * Author: chaterolas
 * 
 * Created on 24 de junio de 2009, 09:25 PM
 */

#include "light.h"

/**
 * Crea una nueva instancia de luz, a partir de los siguientes parametros
 * @param c (color asociado a la luz)
 * @param pos (posicion de referencia de la luz)
 * @param dir (direccion a donde apunta ea luz)
 * @param inty (intensidad de la luz)
 * @param samp (numero de muestras a considerar para el metodo de integracion de
 * montecarlo)
 */
Light::Light(double cR, double cG, double cB, double px, double py, double pz,
        double dx, double dy, double dz, double inty, int samp) {
    color = new Color(cR, cG, cB);
    pos = new Vector3D(px, py, pz);
    dir = new Vector3D(dx, dy, dz);
    intensity = inty;
    samples = samp;
    light = 1;
    material = NULL;
}

/**
 * Destruye una instancia de luz zdemas de los sus componentes pertinentes
 */
Light::~Light() {
    delete color;
    delete pos;
    delete dir;
}

/**
 * Regres el numero de muestras que se tomaran para el metodo de integracion de
 * Monte Carlo.
 *@return samples
 */
int Light::getSampleCount() {
    return samples;
}

/**
 * Regresa la intensidad de esta funte luminosa
 * @return intensity
 */
double Light::getIntesity() {
    return intensity;
}

/**
 * Regresa el colo asociado a esta fuenta luminosa
 * @return color
 */
Color *Light::getColor() {
    return color;
}

/**
 * Regresa la posisicon de referencia de esta fuente luminosa
 * @param pos
 */
Vector3D *Light::getPosition() {
    return pos;
}

int Light::getType() {
    return -1;
}

Vector3D *Light::getNormal(Vector3D* pos) {
    return NULL;
}

double Light::intersect(Ray* r) {
    return INFINITY;
}

